home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / cpptask1.zip / MAIN.CPP < prev    next >
C/C++ Source or Header  |  1991-02-07  |  1KB  |  79 lines

  1. #include    "aedef.h"
  2. #include    "task.h"
  3.  
  4. unsigned    _stklen = 0x4000;
  5.  
  6. class   MyTask1: public Task {
  7. private:
  8.  
  9.     int     iter;
  10.  
  11. public:
  12.  
  13.     MyTask1(char *name, Scheduler &s): Task(name, s), iter(0)
  14.         { }
  15.         
  16. private:
  17.  
  18.     void    tskMain();
  19.     
  20. };
  21.  
  22. class   MyTask2: public Task {
  23. private:
  24.  
  25.     int     iter;
  26.  
  27. public:
  28.  
  29.     MyTask2(char *name, Scheduler &s): Task(name, s), iter(0)
  30.         { }
  31.         
  32. private:
  33.  
  34.     void    tskMain();
  35.     
  36. };
  37.  
  38. void
  39. MyTask1::tskMain()
  40. {
  41.     for (;;) {
  42.         printf("task %s part 1: %d\n", name(), iter);
  43.         int ch;
  44.         if (kbhit() && (ch = getch()) == '1')
  45.             signalSema("sema");
  46.         else if (ch == 0x1B)
  47.             endProcess();
  48.         printf("task %s part 2: %d\n", name(), iter++);
  49.         suspend();
  50.    }
  51. }
  52.  
  53. void
  54. MyTask2::tskMain()
  55. {
  56.     for (;;) {
  57.         printf("task %s part 1: %d\n", name(), iter);
  58.         waitSema("sema");
  59.         printf("task %s part 2: %d\n", name(), iter++);
  60.         suspend();
  61.    }
  62. }
  63.  
  64. void
  65. main()
  66. {
  67.     Scheduler s;
  68.     
  69.     MyTask1 task1("task1", s);
  70.     MyTask2 task2("task2", s);
  71.     
  72.     Sema    sema("sema");
  73.     
  74.     s.addSema(&sema);
  75.     
  76.     s.run();
  77.     exit(EXIT_SUCCESS);
  78. }
  79.